home *** CD-ROM | disk | FTP | other *** search
- /*
- * the class DELETE_PIN
- * Copyright (C) 1996, 1997 Kazutaka Hirata <khirata@jove.acs.unt.edu>
- */
-
- #include "../stdafx.h"
-
- #include "../common/bool.h"
-
- #include "dlpin.h"
-
- STAGE* DELETE_PIN::init_new(KBAN_INFO& /* info */, KBAN_DRAW& /* draw */)
- {
- return new STAGE_SELECT;
- }
-
- const char* DELETE_PIN::get_name(void)
- {
- return "Delete:Pin";
- }
-
- STAGE* DELETE_PIN::STAGE_SELECT::mouse_left_up(KBAN_INFO& info, KBAN_DRAW& /* draw */, const XY& pc, UINT /* nFlags */)
- {
- PRIMITIVE& primitive = info.kban_data().primitive();
- uint layer = info.active_layer().get_pin_layer();
- PIN_LIST& pin_list = primitive.layer(layer).pin_list();
-
- XY ac;
- info.grid().xy_pc2ac_with_snap_off(pc, ac);
-
- PIN_ELEMENT* target = pin_list.search(ac);
-
- STAGE* ret;
- if(target != NULL) {
- ret = new STAGE_CONFIRM(info.active_layer().get_pin_layer(), target);
- } else {
- ret = this;
- }
- return ret;
- }
-
- STAGE* DELETE_PIN::STAGE_SELECT::mouse_right_up(KBAN_INFO& info, KBAN_DRAW& draw, const XY& pc, UINT nFlags)
- {
- return NULL;
- }
-
- DELETE_PIN::STAGE_CONFIRM::STAGE_CONFIRM(uint layer, PIN_ELEMENT* target)
- : m_done(0),
- m_old_pin_layer(layer),
- m_target(target) {}
-
- STAGE* DELETE_PIN::STAGE_CONFIRM::init(KBAN_INFO& info, KBAN_DRAW& draw)
- {
- draw.draw_primitive_pin_target(*m_target);
- return this;
- }
-
- STAGE* DELETE_PIN::STAGE_CONFIRM::redraw(KBAN_INFO& info, KBAN_DRAW& draw)
- {
- draw.draw_primitive_pin_target(*m_target);
- return this;
- }
-
- STAGE* DELETE_PIN::STAGE_CONFIRM::mouse_left_up(KBAN_INFO& info, KBAN_DRAW& draw, const XY& pc, UINT nFlags)
- {
- PRIMITIVE& primitive = info.kban_data().primitive();
- PIN_LIST& pin_list = primitive.layer(m_old_pin_layer).pin_list();
-
- draw.erase_primitive_pin(*m_target);
- pin_list.delete_one(m_target);
- info.SetModifiedFlag();
- info.new_state().set(true);
- info.new_state_str() = "Delete Pin";
-
- m_done.set(TRUE);
- return new STAGE_SELECT;
- }
-
- STAGE* DELETE_PIN::STAGE_CONFIRM::mouse_right_up(KBAN_INFO& info, KBAN_DRAW& /* draw */, const XY& /* pc */, UINT /* nFlags */)
- {
- return new STAGE_SELECT;
- }
-
- void DELETE_PIN::STAGE_CONFIRM::end(KBAN_INFO& info, KBAN_DRAW& draw)
- {
- if(!m_done.get()) {
- draw.draw_primitive_pin(*m_target, m_old_pin_layer);
- }
- }
-